package org.apache.ibatis.scripting.xmltags;

import java.util.List;

/**
 * StaticTextSqlNode 用于存储静态文本，
 * TextSqlNode 用于存储带有 ${} 占位符的文本，
 * IfSqlNode 则用于存储 <if> 节点的内容。
 * MixedSqlNode 内部维护了一个 SqlNode 集合，用于存储各种各样的 SqlNode。
 *
 * @author Clinton Begin
 */
public class MixedSqlNode implements SqlNode {
    private final List<SqlNode> contents;

    public MixedSqlNode(List<SqlNode> contents) {
        this.contents = contents;
    }

    @Override
    public boolean apply(DynamicContext context) {
        // 遍历 SqlNode 集合
        for (SqlNode sqlNode : contents) {
            // 调用 salNode 对象本身的 apply 方法解析 sql
            sqlNode.apply(context);
        }
        return true;
    }
}
